Due to the proliferation of wireless networks, there are a continually increasing number of wireless devices in use today. These devices include mobile telephones, personal digital assistance (PDAs) with wireless communication capabilities, two-way pagers and the like. Concurrently with the increased availability of wireless devices, software applications running on such devices have increased their utility. For example, the wireless device may include an application that retrieves a weather report for a list of desired cities or allows a user to shop for groceries. These software applications take advantage of the ability to transmit data to a wireless network in order to provide timely and useful services to users, often in addition to voice communication. However, due to the number of different types of devices, the limited available resources of some devices, and the complexity of delivering large amounts of data to the devices, developing software applications remains a difficult and time-consuming task.
Currently, devices are configured to communicate with Web Services through Internet based browsers and/or native applications. Browsers have the advantage of being adaptable to operate on a cross-platform basis for a variety of different devices, but have a disadvantage of requesting pages (screen definitions in HTML) from the Web Service, which hinders the persistence of data contained in the screens. A further disadvantage of browsers is the fact that the screens are rendered at runtime, which can be resource intensive. However, applications for browsers are efficient tools for designing platform independent applications. Accordingly, different runtime environments, regardless of the platform, execute the same application. Unfortunately, since different wireless devices have different capabilities and form factors, the application may not be executed or displayed as desired. Further, browser based application often require significant transfer bandwidth to operate efficiently, which may be costly or even unavailable for some wireless devices.
On the other hand, native applications are developed for a specific wireless device platform, thereby providing a relatively optimized application program for a runtime environment running on that platform. However, a platform dependent application introduces several drawbacks, including having to develop multiple versions of the same application and being relatively large in size, thereby taxing memory resources of the wireless device. Further, application developers need experience with programming languages such as JAVA (Java™) and C++ to construct such native applications.
Thus it can be seen that there is a need for application programs that can be run on client devices having a wide variety of operating systems, as well as having a reduced consumption of device resources. Furthermore, it is desirable to achieve the aforementioned result while limiting the complexity for application program developers as much as possible.
Accordingly, it is an object of the present invention to obviate or mitigate at least some of the above-mentioned disadvantages.